home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / src / tools / dbmlist.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-02-28  |  1.4 KB  |  88 lines

  1. #include "util.h"
  2. #include "mmdf.h"
  3.  
  4. /*
  5.  *      Print contents of MMDF address database
  6.  *
  7.  */
  8.  
  9. #include "ch.h"
  10. #include "chdbm.h"
  11.  
  12. extern char *blt();
  13. extern char *tbldfldir;
  14. extern char *tbldbm;
  15.  
  16. typedef struct
  17. {
  18.     char *dptr;
  19.     int dsize;
  20. } datum;
  21.  
  22. extern datum fetch (),
  23.          firstkey (),
  24.          nextkey ();
  25.  
  26. datum key,
  27.     value;
  28.  
  29. char dbfile[128];
  30.  
  31. /*
  32.  * Main procedure.
  33.  * process arguments, set flags and invoke file processing.
  34.  * clean up and exit properly.
  35.  */
  36.  
  37. main(argc, argv)
  38. char **argv;
  39. {
  40.     char tmp[100];
  41.     char *path;
  42.  
  43.     mmdf_init (argv[0]);
  44.     for (path = 0, argv++; argc-- > 1; argv++) 
  45.     {
  46.     if (argv[0][0] == '-')
  47.         switch (argv[0][1])
  48.         {
  49.         default: ;
  50.         }
  51.     else
  52.         path = argv[0];
  53.     }
  54.     getfpath ((path == 0) ? tbldbm : path, tbldfldir, dbfile);
  55.  
  56.     if(dbminit(dbfile) < 0)
  57.     {
  58.         perror("tblprint, fileinit");
  59.         exit (-1);
  60.     }
  61.  
  62.     for (key = firstkey (); key.dptr != NULL; key = nextkey (key))
  63.     {
  64.     blt (key.dptr, tmp, key.dsize);
  65.     tmp[key.dsize] = '\0';
  66.     printf ("%-15s:  ", tmp);      /* key string */
  67.     value = fetch (key);
  68.     prdatum (value);
  69.     }
  70.     exit (0);
  71. }
  72.  
  73. prdatum(val)
  74. datum val;
  75. {
  76.     register int cnt;
  77.     register char *dbptr;
  78.  
  79.     for (dbptr = val.dptr, cnt = val.dsize - 1; cnt-- > 0; dbptr++)
  80.     {
  81.     if (*dbptr >= ' ' && *dbptr <= '~')
  82.         fputc (*dbptr, stdout);
  83.     else
  84.         fprintf (stdout, "<\\%03o>", *dbptr);
  85.     }
  86.     fputs ("\n",stdout);
  87. }
  88.